1. Field of the Invention
The invention relates in general to the field of portable data carriers and the creation of software for such data carriers. In particular, the invention relates to the field of generating program code for a portable data carrier, loading the program code into the data carrier and providing the program code for execution by a processor of the data carrier. For the purpose of the present document, portable data carriers may take the form of chip cards (smart cards) or of compact chip modules and in some embodiments of the invention also of resource-limited systems in other types of construction.
2. Description of Related Art
In recent years portable data carriers have become increasingly powerful in the course of continuous technical development. This is true both of the computing power made available by the hardware and the storage space and of the functions provided by the operating system. Modern portable data carriers exhibit a functionality allowing the post-loading of program code—i.e. the loading of program code during operation of the data carrier. Data carriers into which application programs may be post-loaded have already been known for some time. At present, however, data carriers are also being developed which allow post-loading of parts of the operating system, e.g. of drivers, libraries or functional modules. It is to be expected that this post-loading option will develop in future into an important part of flexible operating systems for portable data carriers.
In general, important factors in relation to portable data carriers are the aspects of security and spy protection, because portable data carriers are often used for security-critical applications and considerable damage could arise as a result of unauthorized use or spying. A particular problem of data carriers which allow post-loading of program code is that the internal workings of the data carrier must as far as possible not be exposed. In particular, it must be ensured that the external developer of the program code to be post-loaded does not require or cannot acquire information about the internal structure and internal program structures of the data carrier. Thus, for example, platform-dependent functions of the data carrier must as far as possible remain hidden, even if the program code to be post-loaded ultimately makes use of these functions.